以深度學習結合擴增實境
於金門觀光體驗之應用
Yolo 系列 (You only look once, Yolo) 是關於物件偵測 (object detection) 的類神經網路演算法,以小眾架構 darknet 實作,實作該架構的作者 Joseph Redmon 沒有用到任何著名深度學習框架,輕量、依賴少、演算法高效率,在工業應用領域很有價值,例如行人偵測、工業影像偵測等等。
實做請先下載此連結的專案
YOLO專案我們首先在金門各景點拍攝了許多不同角度的照片,之後為了增加資料擊還在網路上爬蟲景點的照片來進行訓練
使用labelimg來幫每張圖片做景點的標籤
修改此專案中KD.names的檔案,裡面放的是標籤的類別。KD.data也要改,Classes後面的數字為標籤類別的個數
接著修改yolov3-KD.cfg_train檔案(在build\darknet\x64\cfg中)
將文件中的classes改成標籤的類別數目(本次使用了4個) 再來修改filers ,filters的計算公式為(classes + 5)x3,這次使用了4類,所以是(4+5)*3=27,文件里一共有3處需要修改,注意,文件里有多處filter,但我們只需要修改[yolo]層之前的[convolutional]層下面的filters
接著下載欲訓練的weight檔 (放到build\darknet\x64) 載點
使用此指令來開始訓練(切到x64下來執行)
darknet.exe detector train data/KD.data cfg/yolov3-KD.cfg_train darknet53.conv.74
每迭代100次就會在backup文件夾中上生成一个weight檔案
當avg loss在好幾個迭代中都没有下降,此時可以停止訓練了
在本專案中,發現到權重檔的迭代並非越多越好,測試了2萬、3萬、4萬後,發現2萬左右的準確率最高。應該和資料集的多寡有關。
下圖為訓練畫面
若要從之前的權重檔來繼續訓練,只需在darknet.exe detector train data/KD.data cfg/yolov3-KD.cfg_train後面加上backup/你的weight檔名即可
使用此命令測試
darknet.exe detector test data/KD.data cfg/yolov3-KD.cfg_test backup/KD_yolov3_2000.weights data/test1.jpg -thresh 0.5
cfg/yolov3-KD.cfg_test 是用來測試的文件,只需要複製cfg/yolov3-KD.cfg_train的内容然後把batch和subdivisions設置為1即可
backup/KD_yolov3_2000.weights 為weight檔
data/test1.jpg 為測試圖片的路徑的路徑
-thresh 0.5 設置閾值,例如0.5,如果没有標籤框就設置低點
上為成功辨識的畫面
https://zhuanlan.zhihu.com/p/45852709
https://zhuanlan.zhihu.com/p/45845454
https://pjreddie.com/darknet/yolo/
https://mropengate.blogspot.com/2018/06/yolo-yolov3.html